# views.py
from django.http import JsonResponse
import urllib.parse
import json


def show_chart(request):
    try:
        # 1. 获取并解码 URL 中的 ECharts 配置（option 参数）
        option_str = request.GET.get('option', '{}')
        # 解码 URL 编码的字符串（处理特殊字符）
        decoded_option = urllib.parse.unquote(option_str)
        # 转换为 JSON 格式
        echarts_option = json.loads(decoded_option)

        # 2. 补充默认配置（避免前端渲染出错）
        if not echarts_option.get('xAxis'):
            echarts_option['xAxis'] = {"type": "category", "data": ["默认数据"]}
        if not echarts_option.get('yAxis'):
            echarts_option['yAxis'] = {"type": "value"}
        if not echarts_option.get('tooltip'):
            echarts_option['tooltip'] = {"trigger": "axis"}

        # 3. 返回 JSON 数据（允许跨域）
        response = JsonResponse(echarts_option)
        # 允许前端跨域请求（根据你的前端端口调整，如 80、8080）
        response['Access-Control-Allow-Origin'] = 'http://localhost:80'  # 前端页面地址
        return response

    except json.JSONDecodeError:
        # 配置解析失败时返回默认配置
        default_option = {
            "title": {"text": "默认财务图表", "left": "center"},
            "xAxis": {"type": "category", "data": ["2025Q1"]},
            "yAxis": {"type": "value", "name": "金额（亿元）"},
            "series": [
                {"name": "营收", "type": "bar", "data": [100]},
                {"name": "净利润", "type": "bar", "data": [50]},
                {"name": "成本", "type": "bar", "data": [30]}
            ]
        }
        return JsonResponse(default_option)